home *** CD-ROM | disk | FTP | other *** search
- \ LPS LPC READ-PEN -- light pen utilities 04Mar84RSW
- FORTH DEFINITIONS HEX
- : TASK ;
- 3D4 CONSTANT CRTAD 3D5 CONSTANT CRTD 10 CONSTANT LPADH
- 11 CONSTANT LPADL 3DA CONSTANT LPS 3DB CONSTANT LPC
- 2 CONSTANT LPMASK 4 CONSTANT LPSMASK DECIMAL
-
- : READ-PEN ( --- pen-address )
- LPS P@ LPMASK AND 2 = IF \ pen lit?
- LPADH CRTAD P! CRTD P@ 256 * \ yes - read hi addr
- LPADL CRTAD P! CRTD P@ \ read lo addr
- OR \ combine addresses
- ELSE
- 0 \ no - return 0
- THEN
- 0 LPC P! ; \ clear pen status
- \ DSP-LP-SW -- display light pen switch status 04Mar84RSW
-
-
- : DSP-LP-SW
- LPS P@ LPSMASK AND 4 = IF \ fetch switch status
- ." open "
- ELSE
- ." closed "
- THEN
- ;
-
-
-
-
-
-
- \ MON-PEN -- monitor light pen status 04Mar84RSW
-
-
- : MON-PEN
- CR
- BEGIN
- READ-PEN
- HEX U. DECIMAL DSP-LP-SW 13 EMIT
- ?TERMINAL
- UNTIL
- CR ." DONE " ;
-
-
-
-
-
-
-
-
-
-
-
-
- NSTANT LIT.ADR
- ' : 2 - @ CONSTANT DOCOL.ADR
- ' 0BRANCH 2 - CONSTANT 0BRANCH.ADR
- ' BRANCH 2 - CONSTANT BRANCH.ADR
- ' <+LOOP> 2 - CONSTANT PLOOP.ADR
- ' <."> 2 - CONSTANT PDOTQ.ADR
- ' C/L 2 - @ CONSTANT CONST.ADR
- ' BASE 2 - @ CONSTANT USERV.ADR
- ' USE 2 - @ CONSTANT VAR.ADR
- ' <;CODE> 2 - CONSTANT PSCODE.ADR
-
- \ constants cont -- fig-FORTH Decompiler 30Dec83RSW
-
- ' </LOOP> 2 - CONSTANT SLOOP.ADR
- ' <ABORT"> 2 - CONSTANT PABORTQ.ADR
- ' EXIT 2 - CONSTANT EXIT.ADR
-
-
-
-
-
-
-
-
-
-
-
- \ N. PDOTQ.DSP WORD.DSP -- fig-FORTH Decompiler 30Dec83RSW
- FORTH DEFINITIONS DECIMAL
- : N. ( print a number in decimal and hex )
- DUP DECIMAL . SPACE
- HEX 0 ." ( " D. ." H ) " DECIMAL ;
-
- : PDOTQ.DSP ( display a compiled text string )
- WORD.PTR @ 2+ DUP >R DUP
- C@ + 1 - WORD.PTR !
- R> COUNT TYPE ;
-
- : WORD.DSP ( given CFA, display the glossary name )
- 3 - -1 TRAVERSE DUP 1+ C@ 59 =
- IF 1 QUIT.FLAG ! THEN
- DUP C@ 160 AND 128 =
- IF ID. ELSE 1 QUIT.FLAG ! THEN ;
- \ BRANCH.DSP USERV.DSP -- fig-FORTH Decompiler 30Dec83RSW
-
- : BRANCH.DSP ( get branch offset, calculate the )
- ( actual branch address, and display it )
- ." to "
- WORD.PTR @ 2+ DUP WORD.PTR !
- DUP @ +
- 0 HEX D. DECIMAL ;
-
- : USERV.DSP ( display a user variable )
- ." User variable, current value = "
- WORD.PTR @ 2+
- C@ [ HEX ] 38 UP @ + + [ DECIMAL ]
- @ N.
- 1 QUIT.FLAG ! ;
-
- \ VAR.DSP CONST.DSP -- fig-FORTH Decompiler 30Dec83RSW
-
- : VAR.DSP ( display a variable )
- ." Variable, current value = "
- WORD.PTR @ 2+
- @ N.
- 1 QUIT.FLAG ! ;
-
- : CONST.DSP ( display a compiled constant )
- ." Constant, value = "
- WORD.PTR @ 2+
- @ N.
- 1 QUIT.FLAG ! ;
-
-
-
- \ DIS -- fig-FORTH Decompiler 29Dec83RSW
- : DIS
- -FIND 0=
- IF 3 SPACES ." ? not in glossary " CR
- ELSE DROP DUP DUP 2 -
- @ =
- IF ." <primitive> " CR
- ELSE
- 0 QUIT.FLAG !
- 2 - WORD.PTR !
- CR CR
- BEGIN
- WORD.PTR @ DUP
- 0 HEX D. SPACE DECIMAL
- @
- -->
- \ DIS cont -- fig-FORTH Decompiler 30Dec83RSW
- CASE
- LIT.ADR OF
- WORD.PTR @ 2+ DUP WORD.PTR ! @ N. ENDOF
- DOCOL.ADR OF
- ." : " ENDOF
- 0BRANCH.ADR OF
- ." Branch if zero " BRANCH.DSP ENDOF
- BRANCH.ADR OF
- ." Branch " BRANCH.DSP ENDOF
- LOOP.ADR OF
- ." Loop " BRANCH.D